package com.camartsApp.Config;

import com.camartsApp.Util.TokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @version .......
 * @创建时间 2025/6/12  下午11:43
 * @创建者 玉苏甫江
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

	@Autowired
	private TokenInterceptor tokenInterceptor;

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(tokenInterceptor)
				.addPathPatterns("/**/api/**") // 拦截所有请求t
				.excludePathPatterns(
						"/api/user/login",     // 放行登录
						"/api/user/register",  // 放行注册
						"/error",
						// Spring Boot 默认错误
						"/swagger-resources/**", "/swagger-ui/**", "/v3/api-docs/**", // 放行Swagger接口（如有）
						HttpMethod.OPTIONS.name() // 新增：放行 OPTIONS 请求，用于 CORS 预检
				);
	}

	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**") // 允许所有路径
				.allowedOriginPatterns( // 使用 patterns 替代 origins
						"http://localhost:5173",       // 允许所有端口
						"https://*.camartshub.top"  // 允许所有子域名
				)
//				.allowedOrigins("https://www.camartshub.top")// 允许前端的源
				.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的方法
				.allowedHeaders("*") // 允许所有请求头
				.allowCredentials(true) // 允许携带认证信息（如 Cookies, Authorization header）
				.maxAge(3600); // 预检请求的缓存时间
	}
}